package day1;

import org.junit.Test;

import java.util.Scanner;

public class HelloWorld {
    // main
    public static void main(String[] args) {
        // sout
        // ctrl+x
        System.out.println();
        // soutm   systrace
        System.out.println("HelloWorld.main");
        // 变量 variable
        // “=”把右边的10赋值给左边的变量age
        int age = 10;
        age = 12;
        System.out.println(age);
        // final修饰变量，这个变量就是常量
        final int num = 23;
        // Cannot assign a value to final variable 'num'
        // num = 24;

        int a1  = 23;
    }

    // junit
    // Alt+Enter
    // 不能再起类名为Test的类
    // public void 方法名可以随便起(不能有参数)
    @Test
    public void test1() {
        char ch1 = 'a';
        System.out.println(ch1);
        char ch2 = '中';
        System.out.println(ch2);
    }

    /*数据类型转换：
    1、从小到大自动类型转换
    2、从大到小需要强制类型转换，可能会丢失精度(装水的杯子大小不一样)
    byte->short(char)->int->long->float->double*/
    @Test
    public void tes2() {
        char ch = 'a';// 97
        System.out.println(ch);// a
        System.out.println(ch + 1);// 97+1=98->b 从小到大自动类型转换
        System.out.println(ch + 2);// 99->c
        System.out.println((char)(ch + 1));// b
        System.out.println((char)(ch + 2));// c
        double d = 3.14;
        System.out.println((int)d);// 3
    }

    //+     -     *     /    %
    @Test
    public void test3() {
        int num1 = 3;
        int num2 = 5;
        int result = num1 + num2;
        System.out.println(result);
        System.out.println(num1 + num2);

        System.out.println(8 / 2);// 4
        System.out.println(8 % 2);// 0
        System.out.println(8 / 5);// 1
        System.out.println(8 % 5);// 3
    }

//    1、单独使用的时候，++、--在前后是没有差别的
//    2、被使用的时候，在前后是有差别的
    @Test
    public void test4() {
        int i = 3;
        i++; // ++i
        System.out.println(i++);// 3
        System.out.println(i);// 4
        System.out.println(++i);// 5
        System.out.println(i);// 5
    }

    /*
    比较运算符：>   <    >=     <=    !=
    比较之后的结果只有两种情况：true、false，所以比较运算的结果是boolean类型
    */
    @Test
    public void test56() {
        int num1 = 3;
        int num2 = 5;
        System.out.println(num1 >= num2);// true
        System.out.println(3 != 5);
        System.out.println(num1 != num2);
    }

//    &&：两边的结果都是true，结果才是true
//   ||：两边只要有一个是true，结果就是true
    @Test
    public void test55(){
        int score1 = 67;
        int score2 = 320;
        boolean result = (score1 >= 60) && (score2 >= 400);
        System.out.println(result);
        result = (score1 >= 60) || (score2 >= 400);
        System.out.println(result);
    }

    // &&和||短路运算：
    @Test
    public void test61() {
        int num1 = 3;
        int num2 = 5;
        // &&短路
        System.out.println(num1 < 0 && num1++ < num2);// false
        System.out.println(num1);// 3
        System.out.println(num2);// 5
        // ||短路
        System.out.println(num1 > 0 || num1++ < num2);// true
        System.out.println(num1);// 3
        System.out.println(num2);// 5
    }

    /*if：
    if (boolean) {
        代码块
    } else if (boolean) {
        代码块
    } else if (boolean) {
        代码块
    } else { // 默认情况
        代码块
    }*/

//  >=90   <=100      优秀
//  >=80    <90       良好
//  >=70    <80       一般
//  >=60    <70      及格
//   <60            不及格
    @Test
    public void testIf() {
        int score = 97;
        if (score >= 90 && score <= 100) {
            System.out.println("优秀");
        } else if (score >= 80 && score < 90) {
            System.out.println("良好");
        } else if (score >= 70 && score < 80) {
            System.out.println("一般");
        } else if (score >= 60 && score < 70) {
            System.out.println("一般");
        } else {
            System.out.println("不及格");
        }
    }

}
